package com.leetcode.str;

/**
 * Created by huangyugen on 2019/08/01
 **/
public class Solution {
    /**
     * 编写一个函数，其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。
     * 不要给另外的数组分配额外的空间，你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
     * 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。
     * 输入：["h","e","l","l","o"]
        输出：["o","l","l","e","h"]
     * @param s
     */
    public void reverseString(char[] s) {
        int i = 0;
        int j = s.length -1;
        while (i < j){
            char temp = s[j];
            s[j] = s[i];
            s[i] = temp;
            i ++;
            j --;
        }
    }

    /**
     * 给出一个 32 位的有符号整数，你需要将这个整数中每位上的数字进行反转。
     * 输入: 123
     输出: 321
     输入: -123
     输出: -321
     输入: 120
     输出: 21
     * @param x
     * @return
     */
    public int reverse(int x) {
        return 0;
    }


    /**
     * 给定一个字符串，找到它的第一个不重复的字符，并返回它的索引。如果不存在，则返回 -1。
     * s = "leetcode"
     * 返回 0.
     * @param s
     * @return
     */
    public static int firstUniqChar(String s) {
//        if(s.length() == 0){
//            return -1;
//        }
//        if(s.length() == 1){
//            return 0;
//        }
//        char[] chars = s.toCharArray();
//        for (int i = 0;i < chars.length;i++){
//            boolean find = false;
//            for (int j = 0;j < chars.length;j++){
//                if(i != j && chars[i] == chars[j]){
//                    find = true;
//                    break;
//                }
//            }
//            if(!find){
//                return i;
//            }
//        }
//        return -1;
        int index = -1;
        //反过来，只有26个字符
        for (char ch = 'a'; ch <= 'z'; ch++) {
            int beginIndex = s.indexOf(ch);
            // 从头开始的位置是否等于结束位置，相等说明只有一个，
            if (beginIndex != -1 && beginIndex == s.lastIndexOf(ch)) {
                //取小的，越小代表越前。
                index = (index == -1 || index > beginIndex) ? beginIndex : index;
            }
        }
        return index;
    }

    /**
     * 给定一个 haystack 字符串和一个 needle 字符串，在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。
     * 如果不存在，则返回  -1。
     * 输入: haystack = "hello", needle = "ll"
     * 输出: 2
     * 输入: haystack = "aaaaa", needle = "bba"
     * 输出: -1
     *
     * @param haystack
     * @param needle
     * @return
     */
    public int strStr(String haystack, String needle) {
        if(needle == null){
            return  0;
        }
        return  haystack.indexOf(needle);
    }



}
